import { Component,Input,Output,EventEmitter } from '@angular/core';

@Component({
  selector: 'app-tree',
  templateUrl: './tree.component.html',
  styleUrls: ['./tree.component.css']
})
export class TreeComponent{

  @Input()icon:string;
  _data:any=null;
  @Output()select=new EventEmitter<any>();

  constructor() { }

  /**加工处理数据=为每个节点设置level(控制节点缩进),isOpen(控制节点是否打开)*/
  @Input()
  set data(data:any){
     /**this._data=data;传递引用和传递拷贝对象*/
     this._data=Object.assign({},data);
     this.setLevel(this._data,0);
  }
  
  /**为每个节点设置level*/
  setLevel(node:any,level:number){
      /**如果节点已经设置了level,则不需要重新设置避免被覆盖*/
     if(node.level){ return; } //node.level=node.level ? node.level : level ;
     node.level=level
     if(node.children&&node.children.length>0){
        for(let child of node.children){
            this.setLevel(child,level+1);
        }
     }
  }
  /**选中节点*/
  choose(node:any){
     this.select.emit(node);
  }

}
